package thread07;
/**
 * 多线程安全问题:卖票
 * 需求:电影院要卖票，我们模拟电影院的卖票过程。假设要播放的电影是 “功夫熊猫3”，本次电影的座位共100个(本场电影只能卖100张票)。
 *     需要窗口，采用线程对象来模拟；需要票，Runnable接口子类来模拟
 * 多线程卖票:
 * 例如:三个窗口模拟卖100张票(编号1-100)
 * A窗口  B窗口  C窗口
 * 100   98     95
 * 99    97     94
 * ..    96     ...
 *       ...
 * 我们考虑使用线程来模拟每个窗口,线程执行输出语句模拟窗口卖票任务
 * 窗口 => 线程
 * 卖票=>线程执行任务
 * 多线程安全问题(共同卖100张票)出现了
 *  1.卖重复票,例如:B窗口卖了7号票,A,C窗口又卖了7号票
 *  2.卖错票,例如:B窗口出现了0号票,C窗口出现了-1号票
 */
public class ThreadDemo01 {
    public static void main(String[] args) {
        Ticket t = new Ticket();

        //启动三个线程模拟三个窗口:A窗口 B窗口 C窗口
        //这三个线程操作共享数据 int ticket = 100
        Thread thread01 = new Thread(t);
        thread01.setName("A窗口");
        thread01.start();

        Thread thread02 = new Thread(t);
        thread02.setName("B窗口");
        thread02.start();

        Thread thread03 = new Thread(t);
        thread03.setName("C窗口");
        thread03.start();

    }
}
